package cn.demoncat.util.lang.entity.report;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 报表数据 - 单维度 - 分类:总额
 * 
 * {category,value}
 * 
 * @author 延晓磊
 *
 * @since 2020年7月9日
 */
public class ReportDataItemSum extends ReportDataItem{

	/**
	 * 数据
	 * 
	 * 值：[sum]
	 */
	private List<BigDecimal> value = new ArrayList<>();

	/**
	 * 数据长度
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月14日
	 */
	public int size() {
		return this.value.size();
	}
	
	/**
	 * 构建
	 * 
	 * @param datas	数据{id,sum}
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月13日
	 */
	public static ReportDataItemSum build(List<SidCount> datas) {
		ReportDataItemSum count = new ReportDataItemSum();
		datas.forEach(item -> count.add(item.getId(), item.getSum()));
		return count;
	}
	
	/**
	 * 添加数据
	 * 
	 * @param category	分类
	 * @param value		数据
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月13日
	 */
	public ReportDataItemSum add(String category, BigDecimal value) {
		this.addCategory(category);
		return this.add(value);
	}
	
	/**
	 * 添加数据
	 * 
	 * @param value		数据
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月13日
	 */
	public ReportDataItemSum add(BigDecimal value) {
		this.value.add(value);
		return this;
	}
	
	/**
	 * 设置数据
	 * 
	 * @param i			索引
	 * @param value		数据
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月13日
	 */
	public ReportDataItemSum add(int i, BigDecimal value) {
		this.value.set(i, value);
		return this;
	}
	
	/**
	 * 数据
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月9日
	 */
	public List<BigDecimal> getValue() {
		return value;
	}

	/**
	 * 数据
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月9日
	 */
	public void setValue(List<BigDecimal> value) {
		this.value = value;
	}
	
}
